&، jobs، fg، bg و nohup در آزمونهای LPIC و RHCSA بسیار پرتکرارند.فرض کن داری یه فیلم بزرگ دانلود میکنی. میخوای همزمان بتنی با مرورگر کار کنی، هم موسیقی گوش بدی و هم دانلود ادامه داشته باشه. توی لینوکس، با مدیریت پردازشها میتونی این کار رو انجام بدی! این جلسه بهت یاد میده چطور فرمانها رو به پسزمینه بفرستی، بین پردازشها جابهجا بشی و حتی وقتی ترمینال رو میبندی، فرمانهات ادامه داشته باشن!
&
به طور پیشفرض، وقتی یک فرمان را در ترمینال اجرا میکنید، ترمینال قفل میشود و تا زمانی که آن فرمان تمام نشود، نمیتوانید کار دیگری انجام دهید. برای رفع این مشکل، میتوانید فرمان را با & به پسزمینه بفرستید.
توضیح:
sleep 30 & فرمان sleep را در پسزمینه اجرا میکند.[1] 12345 یعنی این پردازش با شمارهٔ کار 1 و PID 12345 در حال اجراست.& به انتهای یک فرمان، آن فرمان در پسزمینه اجرا میشود و ترمینال برای کارهای دیگر آزاد میشود.
jobs
jobs لیست تمام پردازشهایی که در پسزمینه یا متوقف شدهاند را نمایش میدهد.
توضیح:
[1] و [2] شمارهٔ کار (Job ID) هستند.+ نشاندهندهٔ آخرین پردازشی است که به پسزمینه فرستاده شده.- نشاندهندهٔ پردازش قبلی است.jobs فقط پردازشهای همان شل (Shell) را نشان میدهد. برای مشاهدهٔ همهٔ پردازشهای سیستم از ps استفاده کنید.
fg
fg (مخفف Foreground) یک پردازش را از پسزمینه به جلو میآورد و ترمینال را در اختیار آن قرار میدهد.
توضیح: fg %1 پردازش شمارهٔ ۱ را به جلو میآورد. ترمینال تا زمانی که این پردازش تمام نشود، در اختیار شما نخواهد بود.
fg را بدون شماره اجرا کنید، آخرین پردازش (که با + مشخص شده) را به جلو میآورد.
bg
bg (مخفف Background) یک پردازش متوقفشده را در پسزمینه ادامه میدهد.
توضیح:
bg %1 پردازش متوقفشده را در پسزمینه ادامه میدهد.| دستور | کاربرد | مثال |
|---|---|---|
& |
اجرای فرمان در پسزمینه | sleep 30 & |
jobs |
نمایش پردازشهای پسزمینه | jobs -l (با PID) |
fg %N |
آوردن پردازش N به جلو | fg %1 |
bg %N |
ادامهٔ پردازش N در پسزمینه | bg %1 |
| Ctrl+Z | متوقف کردن پردازش جاری | در حین اجرای فرمان |
| Ctrl+C | خاتمه دادن به پردازش جاری | در حین اجرای فرمان |
nohup
nohup (مخفف No Hang Up) به شما اجازه میدهد فرمانی را اجرا کنید که حتی پس از بسته شدن ترمینال نیز به کار خود ادامه دهد.
nohup سیگنال SIGHUP (که هنگام بسته شدن ترمینال به پردازشها ارسال میشود) را نادیده میگیرد و پردازش به کار خود ادامه میدهد.
توضیح:
nohup خروجی فرمان را به فایل nohup.out هدایت میکند.tail -f nohup.outnohup برای اجرای فرمانهای طولانیمدت که باید حتی پس از خروج از سیستم ادامه داشته باشند، استفاده میشود.
nohupتوضیح:
nohup فرمان را از ترمینال جدا میکند.> ping.log خروجی را به فایل هدایت میکند.2>&1 خطاها را نیز به همان فایل هدایت میکند.& فرمان را در پسزمینه اجرا میکند.| روش | پسزمینه | ادامه پس از بستن ترمینال | خروجی کجا میرود؟ |
|---|---|---|---|
command |
❌ خیر | ❌ خیر (متوقف میشود) | ترمینال |
command & |
✅ بله | ❌ خیر (متوقف میشود) | ترمینال (آشفته) |
nohup command & |
✅ بله | ✅ بله (ادامه دارد) | nohup.out |
nohup command > file 2>&1 & |
✅ بله | ✅ بله (ادامه دارد) | فایل مشخصشده |
& → فرمان را در پسزمینه اجرا میکند.jobs → لیست پردازشهای پسزمینه را نشان میدهد.fg → پردازش را به جلو (Foreground) میآورد.bg → پردازش متوقفشده را در پسزمینه ادامه میدهد.nohup → فرمان را از ترمینال جدا کرده و پس از بستن ترمینال نیز ادامه میدهد.nohup.out → فایل پیشفرض خروجی nohup.یک اسکریپت بنویسید که:
while نامحدود با sleep 5 ایجاد کند که هر ۵ ثانیه یک پیام چاپ کند.nohup در پسزمینه اجرا کنید.my_log.log هدایت کنید.tail -f my_log.log خروجی را مشاهده کنید.